package com.rupecm.projeto;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.rupecm.artefato.Artefato;

public class Projeto implements Serializable {
	
	
	private static final long serialVersionUID = 1320210592127995923L;
	
	//Atributos TBL projetos
	private int idProjeto;
	private String nome;
	private Date dataInicio;
	private Date dataFimPrevisto;
	private Date dataFimReal;
	private int hh;
	private double peso;
	private String descricao;
	private Date dataCadastro;
	private String licoesAprendidas;
	private int idGerente;
	private int idStatus;
	private int idCategoria;
	//Attributos auxiliares
	private List <Artefato> ArtefatosProjeto;
	private String gerenteStr;
	private int percentualEntrega;
	private String corStatus;
	private String statusStr;
	
	//Construtor
	public Projeto(){}


	
	
	
	public String getStatusStr() {
		return statusStr;
	}
	public void setStatusStr(String statusStr) {
		this.statusStr = statusStr;
	}
	public String getCorStatus() {
		return corStatus;
	}
	public void setCorStatus(String corStatus) {
		this.corStatus = corStatus;
	}
	public int getPercentualEntrega() {
		return percentualEntrega;
	}
	public void setPercentualEntrega(int percentualEntrega) {
		this.percentualEntrega = percentualEntrega;
	}
	public String getGerenteStr() {
		return gerenteStr;
	}
	public void setGerenteStr(String gerenteStr) {
		this.gerenteStr = gerenteStr;
	}
	public List<Artefato> getArtefatosProjeto() {
		return ArtefatosProjeto;
	}
	public void setArtefatosProjeto(List<Artefato> artefatosProjeto) {
		ArtefatosProjeto = artefatosProjeto;
	}
	public int getIdProjeto() {
		return idProjeto;
	}
	public void setIdProjeto(int idProjeto) {
		this.idProjeto = idProjeto;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Date getDataInicio() {
		return dataInicio;
	}
	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}
	public Date getDataFimPrevisto() {
		return dataFimPrevisto;
	}
	public void setDataFimPrevisto(Date dataFimPrevisto) {
		this.dataFimPrevisto = dataFimPrevisto;
	}
	public Date getDataFimReal() {
		return dataFimReal;
	}
	public void setDataFimReal(Date dataFimReal) {
		this.dataFimReal = dataFimReal;
	}
	public int getHh() {
		return hh;
	}
	public void setHh(int hh) {
		this.hh = hh;
	}
	public double getPeso() {
		return peso;
	}
	public void setPeso(double peso) {
		this.peso = peso;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public Date getDataCadastro() {
		return dataCadastro;
	}
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}
	public String getLicoesAprendidas() {
		return licoesAprendidas;
	}
	public void setLicoesAprendidas(String licoesAprendidas) {
		this.licoesAprendidas = licoesAprendidas;
	}
	public int getIdGerente() {
		return idGerente;
	}
	public void setIdGerente(int idGerente) {
		this.idGerente = idGerente;
	}
	public int getIdStatus() {
		return idStatus;
	}
	public void setIdStatus(int idStatus) {
		this.idStatus = idStatus;
	}
	public int getIdCategoria() {
		return idCategoria;
	}
	public void setIdCategoria(int idCategoria) {
		this.idCategoria = idCategoria;
	}
	public static long getSerialversionuid() {
		return serialVersionUID;
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((dataCadastro == null) ? 0 : dataCadastro.hashCode());
		result = prime * result
				+ ((dataFimPrevisto == null) ? 0 : dataFimPrevisto.hashCode());
		result = prime * result
				+ ((dataFimReal == null) ? 0 : dataFimReal.hashCode());
		result = prime * result
				+ ((dataInicio == null) ? 0 : dataInicio.hashCode());
		result = prime * result
				+ ((descricao == null) ? 0 : descricao.hashCode());
		result = prime * result + hh;
		result = prime * result + idCategoria;
		result = prime * result + idGerente;
		result = prime * result + idProjeto;
		result = prime * result + idStatus;
		result = prime
				* result
				+ ((licoesAprendidas == null) ? 0 : licoesAprendidas.hashCode());
		result = prime * result + ((nome == null) ? 0 : nome.hashCode());
		long temp;
		temp = Double.doubleToLongBits(peso);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}

	

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Projeto other = (Projeto) obj;
		if (dataCadastro == null) {
			if (other.dataCadastro != null)
				return false;
		} else if (!dataCadastro.equals(other.dataCadastro))
			return false;
		if (dataFimPrevisto == null) {
			if (other.dataFimPrevisto != null)
				return false;
		} else if (!dataFimPrevisto.equals(other.dataFimPrevisto))
			return false;
		if (dataFimReal == null) {
			if (other.dataFimReal != null)
				return false;
		} else if (!dataFimReal.equals(other.dataFimReal))
			return false;
		if (dataInicio == null) {
			if (other.dataInicio != null)
				return false;
		} else if (!dataInicio.equals(other.dataInicio))
			return false;
		if (descricao == null) {
			if (other.descricao != null)
				return false;
		} else if (!descricao.equals(other.descricao))
			return false;
		if (hh != other.hh)
			return false;
		if (idCategoria != other.idCategoria)
			return false;
		if (idGerente != other.idGerente)
			return false;
		if (idProjeto != other.idProjeto)
			return false;
		if (idStatus != other.idStatus)
			return false;
		if (licoesAprendidas == null) {
			if (other.licoesAprendidas != null)
				return false;
		} else if (!licoesAprendidas.equals(other.licoesAprendidas))
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (Double.doubleToLongBits(peso) != Double
				.doubleToLongBits(other.peso))
			return false;
		return true;
	}

	
	
}
